package Graphique;
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import javaTrader.Historique;

import javax.swing.JPanel;

import Observer.Observateur;


public class Courbe extends JPanel implements Observateur{
	private Historique historique;
	private ArrayList<Float> valeurs;
	private int longueur;
	private int hauteur;
	
	public Courbe(Historique historique) {
		this.historique = historique;
		hauteur = 10;
	}
	
	public void paintComponent(Graphics g)
	{
		//on affiche le fond
		g.setColor(Color.white);
		g.fillRect(0, 0, this.getWidth(), this.getHeight());
		
		//on recupere les 100 derniere valeurs
		longueur = (this.getWidth()-80) / 5; //40
		
		valeurs = historique.getOffre(longueur);
		int millieu = this.getHeight() / 2;
		
		//affichage de la grille
		g.setColor(Color.gray);
		
		if (valeurs.size() > 0) 
		{
			int y = millieu;
			Float valeur = valeurs.get(valeurs.size()-1);
			
			while (y > 0)
			{
				g.drawLine(10, y, this.getWidth() - 70, y);
				g.drawString(valeur.toString(), this.getWidth() - 65, y);
				y -= hauteur * 10;
				valeur += (float)0.0001;
			}
			
			int height = this.getHeight();
			
			y = millieu + hauteur * 10;
			
			while (y < height)
			{
				g.drawLine(10, y, this.getWidth() - 70, y);
				g.drawString(valeur.toString(), this.getWidth() - 65, y);
				y += hauteur * 10;
				valeur -= (float)0.0001;
			}
			
		}
		
		//affichage de la courbe
		int depart = 0;
		int arriver = 0;
		
		
		g.setColor(Color.green);
		
		for(int i = valeurs.size()-1; i > 0; i--)
		{
			depart = arriver;
			arriver = (int) ((valeurs.get(i) - valeurs.get(i-1)) * 100000 * hauteur) + depart;
			g.drawLine(i*5, millieu-depart, 5*(i-1), millieu - arriver);			
		}

	}
	
	public void update()
	{
		this.repaint();
	}
	
	
}
